package com.haina.shop.controller.index;

import com.haina.shop.dto.ChangeItemDTO;
import com.haina.shop.result.ServiceResult;
import com.haina.shop.service.BasketService;
import com.haina.shop.vo.ShoppingCartTotalVO;
import com.haina.shop.vo.ShoppingCartVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/p/shopCart")
public class ShoppingCartController {
    @Autowired
    private BasketService service;
    /**
     * 获取当前用户购物车商品数量
     */
    @GetMapping("/prodCount")
    public ServiceResult<Long> getShoppingCartCount(){
        return service.getShoppingCartCount();
    }

    /**
     * 获取当前用户的购物车信息
     */
    @PostMapping("/info")
    public ServiceResult<List<ShoppingCartVO>> getInfoByUserId(){
        return service.getInfoByUserId();
    }

    /**
     * 获取当前用户选中购物项总计、选中的商品数量,参数为购物车id数组
     */
    @PostMapping("/totalPay")
    public ServiceResult<ShoppingCartTotalVO> getTotalPay(){

        return service.getTotalPay();
    }

    /**
     * 通过商品id(prodId)、skuId、店铺Id(shopId),添加/修改用户购物车商品，
     * 并传入改变的商品个数(count)，当count为正值时，
     * 增加商品数量，当count为负值时，将减去商品的数量，
     * 当最终count值小于0时，会将商品从购物车里面删除
     * @param dto
     */
    @PostMapping("/changeItem")
    public ServiceResult changeItem(@RequestBody ChangeItemDTO dto){

        return service.changeItem(dto);
    }

    /**
     * 通过购物车id删除用户购物车物品
     * @param integers
     */
    @DeleteMapping("/deleteItem")
    public ServiceResult deleteItem(@RequestBody List<Long> integers){
         return service.deleteItem(integers);
    }

}
